<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Whisper: CCryptoEngine Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Whisper
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pro-static-attribs">Static Protected Attributes</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a>  </div>
  <div class="headertitle">
<div class="title">CCryptoEngine Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="CCryptoEngine" --><!-- doxytag: inherits="IEmbeddingEngine" -->
<p>Implementation of a crypto engine.  
 <a href="classCCryptoEngine.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="crypto__engine_8h_source.html">crypto_engine.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CCryptoEngine:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classCCryptoEngine.png" usemap="#CCryptoEngine_map" alt=""/>
  <map id="CCryptoEngine_map" name="CCryptoEngine_map">
<area href="classIEmbeddingEngine.html" title="Embedding engine base class." alt="IEmbeddingEngine" shape="rect" coords="258,0,420,24"/>
<area href="classCAdvAmplitudeScrambling.html" alt="CAdvAmplitudeScrambling" shape="rect" coords="0,112,162,136"/>
<area href="classCAmplitudeScrambling.html" alt="CAmplitudeScrambling" shape="rect" coords="172,112,334,136"/>
<area href="classCFrequencyScrambling.html" title="Encrypts and decrypts audio samples using the Frequency Permutation algorithm." alt="CFrequencyScrambling" shape="rect" coords="344,112,506,136"/>
<area href="classCNullCryptoEngine.html" alt="CNullCryptoEngine" shape="rect" coords="516,112,678,136"/>
</map>
 </div></div>

<p><a href="classCCryptoEngine-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a38cc84bc7319bb5588a620ff41ce7300">CCryptoEngine</a> (<a class="el" href="structNAudioFormats_1_1SStreamInfo.html">NAudioFormats::SStreamInfo</a> ioStreamInfo)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a1652cec932c163b356e1f75cdeebabe2">~CCryptoEngine</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#afa42453df8be9a392303d70b4fdef7ce">embedIntoSamples</a> (int8_t *pSamples, unsigned int pCount, unsigned int pLeak)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">hook call for glue code  <a href="#afa42453df8be9a392303d70b4fdef7ce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a56c0cce3de7d609dc7b9d02aedaf269c">embedIntoSamples</a> (uint8_t *pSamples, unsigned int pCount, unsigned int pLeak)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a4d593436533e1181ff78aee0e5a180cf">embedIntoSamples</a> (int16_t *pSamples, unsigned int pCount, unsigned int pLeak)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a77d0b14647029fe24da5cf9a98722420">embedIntoSamples</a> (uint16_t *pSamples, unsigned int pCount, unsigned int pLeak)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#ad7bd16eab935a6bb6394023a7d002a1c">embedIntoSamples</a> (double *pSamples, unsigned int pCount, unsigned int pLeak)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a987c8e885306c46278154850f9d08329">extractFromSamples</a> (int8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">hook call for glue code  <a href="#a987c8e885306c46278154850f9d08329"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#aedf491be2045c9e0eb328a7601aeb2b8">extractFromSamples</a> (uint8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#af2c1e3584afe76a542d710ced83d429d">extractFromSamples</a> (int16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#ac5923a7e5647d09aead6e2062fdca5d9">extractFromSamples</a> (uint16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a09d61a9930a53ca76c1b940afb1aff88">extractFromSamples</a> (double *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a3e15dd4a337b2b5d1d74cc4b0f923cef">shutdown</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#ae509c020577b0be6b45f63a78304314f">changeSettings</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#abe276f3773c39536ba0ce3c3e3185268">getNumRequiredSamples</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">determine number of processible samples  <a href="#abe276f3773c39536ba0ce3c3e3185268"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a5fe78aa78cd14bbf52e8c897e128af49">getIniSectionName</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">get the abbreviation for the properties reader  <a href="#a5fe78aa78cd14bbf52e8c897e128af49"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <br class="typebreak"/>
<a class="el" href="namespaceNAudioFormats.html#a0f5b4d2b68d4ba2b34bac333d4f5f808">NAudioFormats::ESamplesFormat</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a0b8e86c1fa977f571de690f268fa4087">getSamplesFormat</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">determine whether samples should be converted to double before handed over to an embedding engine  <a href="#a0b8e86c1fa977f571de690f268fa4087"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a19175d4e3c5177453e1b7af2bb956bb8">encrypt</a> (double *data, unsigned int pCount)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a3405f0d5fc53cce53f35e2ee03cfb95e">decrypt</a> (double *data, unsigned int pCount)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#aa5e17ace6d2bc9316b4620a299a8fb48">cycleCipherStream</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a7b43455d18efe22c427ff8fa983ef16c">hexValue</a> (char pChar)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a16f88f40bd7409c2f086a0e07ea9b294">readHexString</a> (const std::string &amp;pString, std::string &amp;pHexString)</td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a9b0c72a4b82295bdc714a01cc6c6d02e">calculateSyncSignalFrequencies</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#ab83ba5cc5cd5049b9c0c7581b87eca52">getSamplesNeeded</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a875cfd09f9ee578e10957bcf7e84967d">initCrypto</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a2764aa8f63c1f6d7117564a20dc80885">mFftFrameSize</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">the configured Fourier sample size N  <a href="#a2764aa8f63c1f6d7117564a20dc80885"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a31c60ccedcdd2d753fe231d1b6c1faaa">mDebug</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">debug on?  <a href="#a31c60ccedcdd2d753fe231d1b6c1faaa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a8625979dbe7231d1e16e5e142bfae6bf">mCipherStreamMasterAlgorithm</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#aed48871dfabffe74b361f6f59b280b3d">mCipherStreamSessionAlgorithm</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a4b8ee36cb93330ee40006c0c7d479bab">mCipherStreamIV</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCCipherStream.html">CCipherStream</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a0a0af66405290f7411e8f0df0151540d">mMasterCipherStream</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCCipherStream.html">CCipherStream</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a57e66187e35cfb9f881d53f112ff32cb">mSessionCipherStream</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a0254b83ef71f47ecc76d8dc970f765ca">mInitSyncComplete</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">indicates if the first synchronization frame is completed  <a href="#a0254b83ef71f47ecc76d8dc970f765ca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a46e645375b49245af0d3af4c0c48f5e8">mSyncSignalFrequencies</a> [12][6]</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">frequency patterns for the synchronization ID  <a href="#a46e645375b49245af0d3af4c0c48f5e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#ae5881bffb16d6b9061491f106145118e">mCurrentSyncSignalIndex</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">the current synchronization ID number (0-11)  <a href="#ae5881bffb16d6b9061491f106145118e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#af2de686c8b92194941e3477292b8e160">mSamplesOffset</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset between first sync frame and encrypted data.  <a href="#af2de686c8b92194941e3477292b8e160"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a7859ef447331b267e0f3ff4b7c6b9b39">mInitialSyncOffset</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">the sample number of the first sync frame  <a href="#a7859ef447331b267e0f3ff4b7c6b9b39"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a9893a20e194970e35200d67e3fa0708f">mSyncInitial</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initial Synchronization Signal.  <a href="#a9893a20e194970e35200d67e3fa0708f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structNAudioFormats_1_1SStreamInfo.html">NAudioFormats::SStreamInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a700b8779418a1d73b86a0103de1166b7">mIoStreamInfo</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCFilter.html">CFilter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a8358d303f4dbfc5416effc41c689167b">mFilter</a></td></tr>
<tr><td colspan="2"><h2><a name="pro-static-attribs"></a>
Static Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#aa9030f87332f97cab3ee157341badbd9">sNumRequiredSamples</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">number of processible samples  <a href="#aa9030f87332f97cab3ee157341badbd9"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#af3e33ddb09bc74bde17de9313cbe797e">CCryptoEngine</a> (const <a class="el" href="classCCryptoEngine.html">CCryptoEngine</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCCryptoEngine.html">CCryptoEngine</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#aca1321047b0a566e82a5b499400cc457">operator=</a> (const <a class="el" href="classCCryptoEngine.html">CCryptoEngine</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a00109822a47c3664ab6fd891c37ff065">getAmplitudeOfComplex</a> (double *pComplex)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#ad9f82daccbb3b82e3f94193ddfa88f75">modulus</a> (double a, double b)</td></tr>
<tr><td colspan="2"><h2><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a383b8a7a62188e6c1a92703272b1512e">mGlobalSampleCount</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">sample count since beginning  <a href="#a383b8a7a62188e6c1a92703272b1512e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a709ac55a851ad47376abe96f89784b38">mInputBuffer</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">unprocessed data which should go to OutputBuffer  <a href="#a709ac55a851ad47376abe96f89784b38"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a3fcf88d4c5662368b5c4aeea0b0fbd2b">mOutputBuffer</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">data which should be put on the line  <a href="#a3fcf88d4c5662368b5c4aeea0b0fbd2b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#acc4a9dae2d5d3b3ba35896f927dac46e">mAnalysisBuffer</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">needed to search the sync signal  <a href="#acc4a9dae2d5d3b3ba35896f927dac46e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a5234a3faf5a84e56ac8cc18218240e28">mSyncSignalBuffer</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">syncronization signal which should be written  <a href="#a5234a3faf5a84e56ac8cc18218240e28"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCSignalToolkit.html">CSignalToolkit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#ac6b37184be270d63a20b5ba2f5fd9436">mSignalToolkit</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">different useful tools for signal manipulation  <a href="#ac6b37184be270d63a20b5ba2f5fd9436"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCCryptoEngine.html#a771dc5672c3690791e03d9492f4f2400">sIniSectionName</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation of a crypto engine. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>Template from stegit-2 by gpitsch and rpoisel</dd></dl>
<p>This class is a common model for a encryption algorithm. It handles the buffering of samples and the synchronization of the communication line. The encryption and decryption methods should be implemented by the specific encryption algorithm class </p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a38cc84bc7319bb5588a620ff41ce7300"></a><!-- doxytag: member="CCryptoEngine::CCryptoEngine" ref="a38cc84bc7319bb5588a620ff41ce7300" args="(NAudioFormats::SStreamInfo ioStreamInfo)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CCryptoEngine::CCryptoEngine </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structNAudioFormats_1_1SStreamInfo.html">NAudioFormats::SStreamInfo</a>&#160;</td>
          <td class="paramname"><em>ioStreamInfo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a1652cec932c163b356e1f75cdeebabe2"></a><!-- doxytag: member="CCryptoEngine::~CCryptoEngine" ref="a1652cec932c163b356e1f75cdeebabe2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CCryptoEngine::~CCryptoEngine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="af3e33ddb09bc74bde17de9313cbe797e"></a><!-- doxytag: member="CCryptoEngine::CCryptoEngine" ref="af3e33ddb09bc74bde17de9313cbe797e" args="(const CCryptoEngine &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CCryptoEngine::CCryptoEngine </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCCryptoEngine.html">CCryptoEngine</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a9b0c72a4b82295bdc714a01cc6c6d02e"></a><!-- doxytag: member="CCryptoEngine::calculateSyncSignalFrequencies" ref="a9b0c72a4b82295bdc714a01cc6c6d02e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CCryptoEngine::calculateSyncSignalFrequencies </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Calculates the content of mSyncSignalFrequencies </p>

</div>
</div>
<a class="anchor" id="ae509c020577b0be6b45f63a78304314f"></a><!-- doxytag: member="CCryptoEngine::changeSettings" ref="ae509c020577b0be6b45f63a78304314f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CCryptoEngine::changeSettings </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>called by the protocol engine upon settings change (e.g. change of embedding parameters) calls setProperties and initCrypto if this method gets overwritten, the subclass should call setProperties and initCrypto </p>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#acfc1adf5ae7e28332f825c6f2ae056d2">IEmbeddingEngine</a>.</p>

<p>Reimplemented in <a class="el" href="classCFrequencyScrambling.html#a5b7467e7a2d40a1643186b7066c1fdb9">CFrequencyScrambling</a>, <a class="el" href="classCAdvAmplitudeScrambling.html#a3c8ebe9537d5b48b8fc84c9b7730e851">CAdvAmplitudeScrambling</a>, <a class="el" href="classCNullCryptoEngine.html#aeae9b7fbed7186ccd34a533ccd03f0e6">CNullCryptoEngine</a>, and <a class="el" href="classCAmplitudeScrambling.html#aa2113755623a41093e74d8648069c94f">CAmplitudeScrambling</a>.</p>

</div>
</div>
<a class="anchor" id="aa5e17ace6d2bc9316b4620a299a8fb48"></a><!-- doxytag: member="CCryptoEngine::cycleCipherStream" ref="aa5e17ace6d2bc9316b4620a299a8fb48" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CCryptoEngine::cycleCipherStream </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>reinitialize the session cipher stream with data from the master cipher stream should be used after some time (fixed or variable) to ensure, that the encryption is strong enough and to enable synchronization between the to communication partners</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>

</div>
</div>
<a class="anchor" id="a3405f0d5fc53cce53f35e2ee03cfb95e"></a><!-- doxytag: member="CCryptoEngine::decrypt" ref="a3405f0d5fc53cce53f35e2ee03cfb95e" args="(double *data, unsigned int pCount)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::decrypt </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>abstract method decrypt decrypt pCount bytes from data and write them back to data if not enough data is available for decryption, zeros should be written to the data buffer. This method needs to be implemented by the actual encryption algorithm class.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>double array with amplitude values from 0 to 1 </td></tr>
    <tr><td class="paramname">pCount</td><td>count of audio samples to work with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>sample count which can be written to the output </dd></dl>

<p>Implemented in <a class="el" href="classCFrequencyScrambling.html#a833eb843ff0de97a801f7f12a5807f60">CFrequencyScrambling</a>, <a class="el" href="classCAdvAmplitudeScrambling.html#aecd19de1a33c57aecb169850ccd0b2a7">CAdvAmplitudeScrambling</a>, <a class="el" href="classCNullCryptoEngine.html#a903d791c225f475c02ce2532b5d7324e">CNullCryptoEngine</a>, and <a class="el" href="classCAmplitudeScrambling.html#a5ffcd79359d63ca2b1f40fa19ff497ee">CAmplitudeScrambling</a>.</p>

</div>
</div>
<a class="anchor" id="afa42453df8be9a392303d70b4fdef7ce"></a><!-- doxytag: member="CCryptoEngine::embedIntoSamples" ref="afa42453df8be9a392303d70b4fdef7ce" args="(int8_t *pSamples, unsigned int pCount, unsigned int pLeak)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">int8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>hook call for glue code </p>
<p>called by the voip phone application to embed data into the sample before sending a packet </p>
<dl class="note"><dt><b>Note:</b></dt><dd>this implicitly reads the data to be embedded from the <a class="el" href="classIStegIO.html" title="abstraction layer of a steg payload data source and sink">IStegIO</a></dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pSamples</td><td>samples to be modified </td></tr>
    <tr><td class="paramname">pCount</td><td>number of samples </td></tr>
    <tr><td class="paramname">pLeak</td><td>number of samples not used between last and current call</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>&gt;0 for success, 0 for EOF and &lt;0 for an error </dd></dl>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a0d4c7dd4a9cef7524a016831042094fe">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a56c0cce3de7d609dc7b9d02aedaf269c"></a><!-- doxytag: member="CCryptoEngine::embedIntoSamples" ref="a56c0cce3de7d609dc7b9d02aedaf269c" args="(uint8_t *pSamples, unsigned int pCount, unsigned int pLeak)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a508ca9bd6283cd40250a3cbee9a79778">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a4d593436533e1181ff78aee0e5a180cf"></a><!-- doxytag: member="CCryptoEngine::embedIntoSamples" ref="a4d593436533e1181ff78aee0e5a180cf" args="(int16_t *pSamples, unsigned int pCount, unsigned int pLeak)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">int16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classIEmbeddingEngine.html#aab1d65b5129a308098acab5468e51e3f">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a77d0b14647029fe24da5cf9a98722420"></a><!-- doxytag: member="CCryptoEngine::embedIntoSamples" ref="a77d0b14647029fe24da5cf9a98722420" args="(uint16_t *pSamples, unsigned int pCount, unsigned int pLeak)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">uint16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a12b321a2caf8b08d4435e936bd7fa446">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="ad7bd16eab935a6bb6394023a7d002a1c"></a><!-- doxytag: member="CCryptoEngine::embedIntoSamples" ref="ad7bd16eab935a6bb6394023a7d002a1c" args="(double *pSamples, unsigned int pCount, unsigned int pLeak)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CCryptoEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Handles the action for audio encryption. Buffering, Synchronization and Encryption are done.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pSamples</td><td>samples to be modified </td></tr>
    <tr><td class="paramname">pCount</td><td>number of samples </td></tr>
    <tr><td class="paramname">pLeak</td><td>number of samples not used between last and current call </td></tr>
    <tr><td class="paramname">pInBuffer</td><td>how many samples are left in the buffer. If no extra thread is executed for extraction this parameter is always 0.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success, &gt;0 for success and discard of samples for next call, &lt;0 for an error </dd></dl>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#aa778b0012f0b6d907c7284ce367d16ee">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a19175d4e3c5177453e1b7af2bb956bb8"></a><!-- doxytag: member="CCryptoEngine::encrypt" ref="a19175d4e3c5177453e1b7af2bb956bb8" args="(double *data, unsigned int pCount)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::encrypt </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>abstract method encrypt encrypt pCount bytes from data and write them back to data if not enough data is available for encryption, zeros should be written to the data buffer. This method needs to be implemented by the actual encryption algorithm class.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>double array with amplitude values from 0 to 1 </td></tr>
    <tr><td class="paramname">pCount</td><td>count of audio samples to work with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success, &gt;0 for success and discard of samples for next call, &lt;0 for an error </dd></dl>

<p>Implemented in <a class="el" href="classCFrequencyScrambling.html#a7cd3434ecb1b1a4a3033c84f2ca0968e">CFrequencyScrambling</a>, <a class="el" href="classCAdvAmplitudeScrambling.html#a7d3feb940147fc32943f62fb85c6c6d1">CAdvAmplitudeScrambling</a>, <a class="el" href="classCNullCryptoEngine.html#acfe250e7194f1322f30b99b7ac505a5e">CNullCryptoEngine</a>, and <a class="el" href="classCAmplitudeScrambling.html#a6d55b484deb4e09f17326b0359f2f1cf">CAmplitudeScrambling</a>.</p>

</div>
</div>
<a class="anchor" id="a987c8e885306c46278154850f9d08329"></a><!-- doxytag: member="CCryptoEngine::extractFromSamples" ref="a987c8e885306c46278154850f9d08329" args="(int8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">int8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>hook call for glue code </p>
<p>called by the voip phone application to extract data from the sample after receiving a packet </p>
<dl class="note"><dt><b>Note:</b></dt><dd>this implicitly writes the extracted data to the <a class="el" href="classIStegIO.html" title="abstraction layer of a steg payload data source and sink">IStegIO</a></dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pSamples</td><td>samples to be modified </td></tr>
    <tr><td class="paramname">pCount</td><td>number of samples </td></tr>
    <tr><td class="paramname">pLeak</td><td>number of samples not used between last and current call </td></tr>
    <tr><td class="paramname">pInBuffer</td><td>how many samples are left in the buffer. If no extra thread is executed for extraction this parameter is always 0.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success, &gt;0 for success and discard of samples for next call, &lt;0 for an error </dd></dl>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#afdd4eb903fce7b7ec14ed171c0df64d7">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="aedf491be2045c9e0eb328a7601aeb2b8"></a><!-- doxytag: member="CCryptoEngine::extractFromSamples" ref="aedf491be2045c9e0eb328a7601aeb2b8" args="(uint8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a952b08b4f543a8bdd3ca53e46c16b087">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="af2c1e3584afe76a542d710ced83d429d"></a><!-- doxytag: member="CCryptoEngine::extractFromSamples" ref="af2c1e3584afe76a542d710ced83d429d" args="(int16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">int16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a476e58ee9839c3d29cf308b056d2b0d3">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="ac5923a7e5647d09aead6e2062fdca5d9"></a><!-- doxytag: member="CCryptoEngine::extractFromSamples" ref="ac5923a7e5647d09aead6e2062fdca5d9" args="(uint16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">uint16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implements <a class="el" href="classIEmbeddingEngine.html#af077ceeacbe720f5b588950c4140a096">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a09d61a9930a53ca76c1b940afb1aff88"></a><!-- doxytag: member="CCryptoEngine::extractFromSamples" ref="a09d61a9930a53ca76c1b940afb1aff88" args="(double *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int CCryptoEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Handles the action for audio decryption. Buffering, Synchronization and Encryption are done.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pSamples</td><td>samples to be modified </td></tr>
    <tr><td class="paramname">pCount</td><td>number of samples </td></tr>
    <tr><td class="paramname">pLeak</td><td>number of samples not used between last and current call </td></tr>
    <tr><td class="paramname">pInBuffer</td><td>how many samples are left in the buffer. If no extra thread is executed for extraction this parameter is always 0.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd></dd></dl>
<p>Search for the ID signal starts here TODO: the correlation doesn't work correct yet</p>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a5d7b877de16fb5e8479ce83f75b88ae1">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a00109822a47c3664ab6fd891c37ff065"></a><!-- doxytag: member="CCryptoEngine::getAmplitudeOfComplex" ref="a00109822a47c3664ab6fd891c37ff065" args="(double *pComplex)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double CCryptoEngine::getAmplitudeOfComplex </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pComplex</em></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a5fe78aa78cd14bbf52e8c897e128af49"></a><!-- doxytag: member="CCryptoEngine::getIniSectionName" ref="a5fe78aa78cd14bbf52e8c897e128af49" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::string CCryptoEngine::getIniSectionName </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get the abbreviation for the properties reader </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the abbreviation for the properties reader </dd></dl>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a58c6fd3df13135b91956c42b2f3519a6">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="abe276f3773c39536ba0ce3c3e3185268"></a><!-- doxytag: member="CCryptoEngine::getNumRequiredSamples" ref="abe276f3773c39536ba0ce3c3e3185268" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int CCryptoEngine::getNumRequiredSamples </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>determine number of processible samples </p>
<p>called by the samples distributor to determine the number of samples which can be processed by the embedding engine; this can be a dynamic value or constant (e.g. for LSB, or echo-hiding) all the time</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of processible samples </dd></dl>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#aaeb36f7905d85f9df65b7ba565419888">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a0b8e86c1fa977f571de690f268fa4087"></a><!-- doxytag: member="CCryptoEngine::getSamplesFormat" ref="a0b8e86c1fa977f571de690f268fa4087" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="namespaceNAudioFormats.html#a0f5b4d2b68d4ba2b34bac333d4f5f808">NAudioFormats::ESamplesFormat</a> CCryptoEngine::getSamplesFormat </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>determine whether samples should be converted to double before handed over to an embedding engine </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>ORIGINAL or MODIFIED </dd></dl>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#af1afa2bc32d63b5505a27da584c4a474">IEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="ab83ba5cc5cd5049b9c0c7581b87eca52"></a><!-- doxytag: member="CCryptoEngine::getSamplesNeeded" ref="ab83ba5cc5cd5049b9c0c7581b87eca52" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int CCryptoEngine::getSamplesNeeded </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Describes the size of samples buffered before processed. Exactly this many samples will be passed to the <a class="el" href="classCCryptoEngine.html#a19175d4e3c5177453e1b7af2bb956bb8">encrypt()</a> and <a class="el" href="classCCryptoEngine.html#a3405f0d5fc53cce53f35e2ee03cfb95e">decrypt()</a> method. If the sub-class want's a different size of samples it can override this method and return the wanted size. Per default the FFT Framesize will be returned. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>sample count which will be buffered before further processing </dd></dl>

<p>Reimplemented in <a class="el" href="classCFrequencyScrambling.html#ad117dc8d000544f06161c83d39e96aae">CFrequencyScrambling</a>.</p>

</div>
</div>
<a class="anchor" id="a7b43455d18efe22c427ff8fa983ef16c"></a><!-- doxytag: member="CCryptoEngine::hexValue" ref="a7b43455d18efe22c427ff8fa983ef16c" args="(char pChar)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char CCryptoEngine::hexValue </td>
          <td>(</td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>pChar</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the decimal value of a hexadecimal ASCII digit e.g. 0-9, a-f. If b is passed to the method, 11 is returned</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pChar</td><td>hexadecimal digit as ASCII </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>decimal value of pChar </dd></dl>

</div>
</div>
<a class="anchor" id="a875cfd09f9ee578e10957bcf7e84967d"></a><!-- doxytag: member="CCryptoEngine::initCrypto" ref="a875cfd09f9ee578e10957bcf7e84967d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CCryptoEngine::initCrypto </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>init cyrpto engine don't forget to call super method </p>

</div>
</div>
<a class="anchor" id="ad9f82daccbb3b82e3f94193ddfa88f75"></a><!-- doxytag: member="CCryptoEngine::modulus" ref="ad9f82daccbb3b82e3f94193ddfa88f75" args="(double a, double b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double CCryptoEngine::modulus </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Calculates the modulus of two double values (a/b)</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>The dividend </td></tr>
    <tr><td class="paramname">b</td><td>The divisor</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The rest </dd></dl>

</div>
</div>
<a class="anchor" id="aca1321047b0a566e82a5b499400cc457"></a><!-- doxytag: member="CCryptoEngine::operator=" ref="aca1321047b0a566e82a5b499400cc457" args="(const CCryptoEngine &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCCryptoEngine.html">CCryptoEngine</a>&amp; CCryptoEngine::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCCryptoEngine.html">CCryptoEngine</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a16f88f40bd7409c2f086a0e07ea9b294"></a><!-- doxytag: member="CCryptoEngine::readHexString" ref="a16f88f40bd7409c2f086a0e07ea9b294" args="(const std::string &amp;pString, std::string &amp;pHexString)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CCryptoEngine::readHexString </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>pString</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>pHexString</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Gets out of a string a hexadecimal string.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pString</td><td>some string @üaram pHexTring hexadecimal string </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3e15dd4a337b2b5d1d74cc4b0f923cef"></a><!-- doxytag: member="CCryptoEngine::shutdown" ref="a3e15dd4a337b2b5d1d74cc4b0f923cef" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CCryptoEngine::shutdown </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>called from the engine factory before destroying the handle </p>

<p>Implements <a class="el" href="classIEmbeddingEngine.html#a17d63e5e13b91c9121444833cf5de626">IEmbeddingEngine</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="acc4a9dae2d5d3b3ba35896f927dac46e"></a><!-- doxytag: member="CCryptoEngine::mAnalysisBuffer" ref="acc4a9dae2d5d3b3ba35896f927dac46e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a> <a class="el" href="classCCryptoEngine.html#acc4a9dae2d5d3b3ba35896f927dac46e">CCryptoEngine::mAnalysisBuffer</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>needed to search the sync signal </p>

</div>
</div>
<a class="anchor" id="a4b8ee36cb93330ee40006c0c7d479bab"></a><!-- doxytag: member="CCryptoEngine::mCipherStreamIV" ref="a4b8ee36cb93330ee40006c0c7d479bab" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classCCryptoEngine.html#a4b8ee36cb93330ee40006c0c7d479bab">CCryptoEngine::mCipherStreamIV</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a8625979dbe7231d1e16e5e142bfae6bf"></a><!-- doxytag: member="CCryptoEngine::mCipherStreamMasterAlgorithm" ref="a8625979dbe7231d1e16e5e142bfae6bf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classCCryptoEngine.html#a8625979dbe7231d1e16e5e142bfae6bf">CCryptoEngine::mCipherStreamMasterAlgorithm</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="aed48871dfabffe74b361f6f59b280b3d"></a><!-- doxytag: member="CCryptoEngine::mCipherStreamSessionAlgorithm" ref="aed48871dfabffe74b361f6f59b280b3d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classCCryptoEngine.html#aed48871dfabffe74b361f6f59b280b3d">CCryptoEngine::mCipherStreamSessionAlgorithm</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ae5881bffb16d6b9061491f106145118e"></a><!-- doxytag: member="CCryptoEngine::mCurrentSyncSignalIndex" ref="ae5881bffb16d6b9061491f106145118e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classCCryptoEngine.html#ae5881bffb16d6b9061491f106145118e">CCryptoEngine::mCurrentSyncSignalIndex</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>the current synchronization ID number (0-11) </p>

</div>
</div>
<a class="anchor" id="a31c60ccedcdd2d753fe231d1b6c1faaa"></a><!-- doxytag: member="CCryptoEngine::mDebug" ref="a31c60ccedcdd2d753fe231d1b6c1faaa" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classCCryptoEngine.html#a31c60ccedcdd2d753fe231d1b6c1faaa">CCryptoEngine::mDebug</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>debug on? </p>

</div>
</div>
<a class="anchor" id="a2764aa8f63c1f6d7117564a20dc80885"></a><!-- doxytag: member="CCryptoEngine::mFftFrameSize" ref="a2764aa8f63c1f6d7117564a20dc80885" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classCCryptoEngine.html#a2764aa8f63c1f6d7117564a20dc80885">CCryptoEngine::mFftFrameSize</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>the configured Fourier sample size N </p>

</div>
</div>
<a class="anchor" id="a8358d303f4dbfc5416effc41c689167b"></a><!-- doxytag: member="CCryptoEngine::mFilter" ref="a8358d303f4dbfc5416effc41c689167b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCFilter.html">CFilter</a>* <a class="el" href="classCCryptoEngine.html#a8358d303f4dbfc5416effc41c689167b">CCryptoEngine::mFilter</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a383b8a7a62188e6c1a92703272b1512e"></a><!-- doxytag: member="CCryptoEngine::mGlobalSampleCount" ref="a383b8a7a62188e6c1a92703272b1512e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classCCryptoEngine.html#a383b8a7a62188e6c1a92703272b1512e">CCryptoEngine::mGlobalSampleCount</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>sample count since beginning </p>

</div>
</div>
<a class="anchor" id="a7859ef447331b267e0f3ff4b7c6b9b39"></a><!-- doxytag: member="CCryptoEngine::mInitialSyncOffset" ref="a7859ef447331b267e0f3ff4b7c6b9b39" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classCCryptoEngine.html#a7859ef447331b267e0f3ff4b7c6b9b39">CCryptoEngine::mInitialSyncOffset</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>the sample number of the first sync frame </p>

</div>
</div>
<a class="anchor" id="a0254b83ef71f47ecc76d8dc970f765ca"></a><!-- doxytag: member="CCryptoEngine::mInitSyncComplete" ref="a0254b83ef71f47ecc76d8dc970f765ca" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classCCryptoEngine.html#a0254b83ef71f47ecc76d8dc970f765ca">CCryptoEngine::mInitSyncComplete</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>indicates if the first synchronization frame is completed </p>

</div>
</div>
<a class="anchor" id="a709ac55a851ad47376abe96f89784b38"></a><!-- doxytag: member="CCryptoEngine::mInputBuffer" ref="a709ac55a851ad47376abe96f89784b38" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a> <a class="el" href="classCCryptoEngine.html#a709ac55a851ad47376abe96f89784b38">CCryptoEngine::mInputBuffer</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>unprocessed data which should go to OutputBuffer </p>

</div>
</div>
<a class="anchor" id="a700b8779418a1d73b86a0103de1166b7"></a><!-- doxytag: member="CCryptoEngine::mIoStreamInfo" ref="a700b8779418a1d73b86a0103de1166b7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structNAudioFormats_1_1SStreamInfo.html">NAudioFormats::SStreamInfo</a> <a class="el" href="classCCryptoEngine.html#a700b8779418a1d73b86a0103de1166b7">CCryptoEngine::mIoStreamInfo</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The IO stream info containing, for example, the sample rate </p>

</div>
</div>
<a class="anchor" id="a0a0af66405290f7411e8f0df0151540d"></a><!-- doxytag: member="CCryptoEngine::mMasterCipherStream" ref="a0a0af66405290f7411e8f0df0151540d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCCipherStream.html">CCipherStream</a>* <a class="el" href="classCCryptoEngine.html#a0a0af66405290f7411e8f0df0151540d">CCryptoEngine::mMasterCipherStream</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a3fcf88d4c5662368b5c4aeea0b0fbd2b"></a><!-- doxytag: member="CCryptoEngine::mOutputBuffer" ref="a3fcf88d4c5662368b5c4aeea0b0fbd2b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a> <a class="el" href="classCCryptoEngine.html#a3fcf88d4c5662368b5c4aeea0b0fbd2b">CCryptoEngine::mOutputBuffer</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>data which should be put on the line </p>

</div>
</div>
<a class="anchor" id="af2de686c8b92194941e3477292b8e160"></a><!-- doxytag: member="CCryptoEngine::mSamplesOffset" ref="af2de686c8b92194941e3477292b8e160" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classCCryptoEngine.html#af2de686c8b92194941e3477292b8e160">CCryptoEngine::mSamplesOffset</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Offset between first sync frame and encrypted data. </p>

</div>
</div>
<a class="anchor" id="a57e66187e35cfb9f881d53f112ff32cb"></a><!-- doxytag: member="CCryptoEngine::mSessionCipherStream" ref="a57e66187e35cfb9f881d53f112ff32cb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCCipherStream.html">CCipherStream</a>* <a class="el" href="classCCryptoEngine.html#a57e66187e35cfb9f881d53f112ff32cb">CCryptoEngine::mSessionCipherStream</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ac6b37184be270d63a20b5ba2f5fd9436"></a><!-- doxytag: member="CCryptoEngine::mSignalToolkit" ref="ac6b37184be270d63a20b5ba2f5fd9436" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCSignalToolkit.html">CSignalToolkit</a> <a class="el" href="classCCryptoEngine.html#ac6b37184be270d63a20b5ba2f5fd9436">CCryptoEngine::mSignalToolkit</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>different useful tools for signal manipulation </p>

</div>
</div>
<a class="anchor" id="a9893a20e194970e35200d67e3fa0708f"></a><!-- doxytag: member="CCryptoEngine::mSyncInitial" ref="a9893a20e194970e35200d67e3fa0708f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double* <a class="el" href="classCCryptoEngine.html#a9893a20e194970e35200d67e3fa0708f">CCryptoEngine::mSyncInitial</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initial Synchronization Signal. </p>

</div>
</div>
<a class="anchor" id="a5234a3faf5a84e56ac8cc18218240e28"></a><!-- doxytag: member="CCryptoEngine::mSyncSignalBuffer" ref="a5234a3faf5a84e56ac8cc18218240e28" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCExtendedBuffer.html">CExtendedBuffer</a> <a class="el" href="classCCryptoEngine.html#a5234a3faf5a84e56ac8cc18218240e28">CCryptoEngine::mSyncSignalBuffer</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>syncronization signal which should be written </p>

</div>
</div>
<a class="anchor" id="a46e645375b49245af0d3af4c0c48f5e8"></a><!-- doxytag: member="CCryptoEngine::mSyncSignalFrequencies" ref="a46e645375b49245af0d3af4c0c48f5e8" args="[12][6]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classCCryptoEngine.html#a46e645375b49245af0d3af4c0c48f5e8">CCryptoEngine::mSyncSignalFrequencies</a>[12][6]<code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>frequency patterns for the synchronization ID </p>

</div>
</div>
<a class="anchor" id="a771dc5672c3690791e03d9492f4f2400"></a><!-- doxytag: member="CCryptoEngine::sIniSectionName" ref="a771dc5672c3690791e03d9492f4f2400" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string <a class="el" href="classCCryptoEngine.html#a771dc5672c3690791e03d9492f4f2400">CCryptoEngine::sIniSectionName</a><code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented in <a class="el" href="classCAdvAmplitudeScrambling.html#a99fd7f064206449f6fefe70503d330fc">CAdvAmplitudeScrambling</a>, <a class="el" href="classCFrequencyScrambling.html#a47c6e1f6437bce45fff18bda1d9eb652">CFrequencyScrambling</a>, <a class="el" href="classCAmplitudeScrambling.html#a9e0ffd48421e22d77d88bff3413f7a92">CAmplitudeScrambling</a>, and <a class="el" href="classCNullCryptoEngine.html#a769c429a213aeabdccab36f2f70681ca">CNullCryptoEngine</a>.</p>

</div>
</div>
<a class="anchor" id="aa9030f87332f97cab3ee157341badbd9"></a><!-- doxytag: member="CCryptoEngine::sNumRequiredSamples" ref="aa9030f87332f97cab3ee157341badbd9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int <a class="el" href="classCCryptoEngine.html#aa9030f87332f97cab3ee157341badbd9">CCryptoEngine::sNumRequiredSamples</a><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>number of processible samples </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="crypto__engine_8h_source.html">crypto_engine.h</a></li>
<li><a class="el" href="crypto__engine_8cxx.html">crypto_engine.cxx</a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 25 2012 22:00:41 for Whisper by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
